home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / utilities / emulators / apple2emul.lzh / Samp.disk / T.MUSYS.s < prev   
Text File  |  1991-04-18  |  37KB  |  1,936 lines

  1. ****************************
  2. *                          *
  3. * MUSYS:                   *
  4. * A MULTIUSER/MULTITASKING *
  5. * ELKSYSTEM                *
  6. *                          *
  7. * (C) COPYRIGHT 1983 BY    *
  8. * RICHARD SKRENTA          *
  9. * ALL RIGHTS RESERVED      *
  10. *                          *
  11. ****************************
  12. JOBNO     EQU $00
  13. PCOUNT    EQU $01
  14. JOBPTR    EQU $02
  15. INBUF     EQU $04
  16. OUTBUF    EQU $06
  17. PRSEBUF   EQU $08
  18. SYSMEM    EQU $0A
  19. JOBMEM    EQU $0C
  20. LOMEM     EQU $0E
  21. TEMP      EQU $10
  22. *
  23. REGS      EQU $45
  24. X1        EQU $D0
  25. X2        EQU $D2
  26. X3        EQU $D4
  27. X4        EQU $D6
  28. X5        EQU $D8
  29. X6        EQU $DA
  30. X7        EQU $DC
  31. X8        EQU $DE
  32. PTR0      EQU $E0
  33. PTR1      EQU $E2
  34. PTR2      EQU $E4
  35. PTR3      EQU $E6
  36. PTR4      EQU $E8
  37. T1        EQU $F0
  38. T2        EQU $F2
  39. T3        EQU $F4
  40. T4        EQU $F6
  41. T5        EQU $F8
  42. T6        EQU $FA
  43. T7        EQU $FC
  44. T8        EQU $FE
  45. *
  46. JSTATUS   EQU 0
  47. JPRIORTY  EQU 1
  48. JPCOUNT   EQU 2
  49. JECHO     EQU 3
  50. JINDEV    EQU 4
  51. JOUTDEV   EQU 5
  52. JPROG     EQU 6
  53. JREGS     EQU 8
  54. JCCOUNT   EQU 13
  55. JCTRLC    EQU 14
  56. JINP1     EQU 16
  57. JINP2     EQU 17
  58. JOUTP1    EQU 18
  59. JOUTP2    EQU 19
  60. JPRSEP1   EQU 20
  61. JPRSEP2   EQU 21
  62. JNAME     EQU 22
  63. JUSERID   EQU 30
  64. JACCOUNT  EQU 38
  65. JPROMPT   EQU 42
  66. JPAUSE    EQU 54
  67. JSUSP     EQU 55
  68. JVAR      EQU 56
  69. JINTX     EQU 105
  70. JINTZ     EQU 107
  71. JCOLUMN   EQU 109
  72. JTIME     EQU 110
  73. JPRMPT    EQU 116
  74. JRUNSTAT  EQU 128
  75. *
  76. HOME      EQU $FC58
  77. *
  78. SYSRUN    EQU $300
  79. SUBJOB    EQU SYSRUN+1
  80. Q1        EQU SYSRUN+2
  81. Q2        EQU SYSRUN+3
  82. QS        EQU SYSRUN+4
  83. QM        EQU SYSRUN+5
  84. QH        EQU SYSRUN+6
  85. QD        EQU SYSRUN+7
  86. QMN       EQU SYSRUN+8
  87. QY        EQU SYSRUN+9
  88. K1        EQU SYSRUN+10
  89. K2        EQU SYSRUN+11
  90. MAXJOBS   EQU SYSRUN+18
  91. SUBPROG   EQU SYSRUN+19
  92. SYSLOG    EQU SYSRUN+20
  93. *
  94. DEVICE    EQU $900
  95. DEVIN     EQU DEVICE+3
  96. DEVOUT    EQU DEVICE+6
  97. OPEN      EQU DEVICE+9
  98. CLOSE     EQU DEVICE+12
  99. EXEC      EQU DEVICE+15
  100. DEVSTAT   EQU DEVICE+18
  101. BUFP1     EQU DEVICE+82
  102. BUFP2     EQU DEVICE+99
  103. *
  104.           ORG $8000
  105. MUSYS     JMP INIT
  106.           JMP SETJOB
  107.           JMP CYCLE
  108.           JMP DOCYCLE
  109.           JMP PRTINC
  110.           JMP TIME
  111.           JMP IN
  112.           JMP OUT
  113.           JMP RESUME
  114.           JMP INTER
  115.           JMP PROMPT
  116.           JMP NAME
  117.           JMP READLN
  118.           JMP LEADIN
  119.           JMP DELIM
  120.           JMP PARNUM
  121.           JMP LISTCMD
  122.           JMP PARSE
  123.           JMP CMD
  124.           JMP PROGRAM
  125.           JMP SLEEP
  126.           JMP TAB
  127.           JMP PRINT
  128.           JMP PUSH
  129.           JMP RESET
  130.           JMP PULL
  131.           JMP DECPRT
  132.           JMP DEC
  133.           JMP ZERO
  134.           JMP TIMPRT
  135.           JMP CREATE
  136.           JMP ATTACH
  137.           JMP SYSIO
  138.           JMP EXEC0
  139.           JMP DAYPRT
  140.           JMP BEGIN
  141.           JMP KILL
  142. *
  143. COUT      ORA #$80
  144.           JSR $FDED
  145.           RTS
  146. *
  147. SETJOB    LDA JOBNO
  148.           ASL
  149.           ASL
  150.           ASL
  151.           CLC
  152.           ADC LOMEM+1
  153.           TAY
  154.           STY JOBPTR+1
  155.           INY
  156.           STY INBUF+1
  157.           INY
  158.           STY OUTBUF+1
  159.           INY
  160.           STY PRSEBUF+1
  161.           INY
  162.           STY SYSMEM+1
  163.           INY
  164.           STY JOBMEM+1
  165.           LDY #0
  166.           STY JOBPTR
  167.           STY INBUF
  168.           STY OUTBUF
  169.           STY PRSEBUF
  170.           STY SYSMEM
  171.           STY JOBMEM
  172.           RTS
  173. *
  174. CYCLE     INC JOBNO
  175.           LDA JOBNO
  176.           CMP MAXJOBS
  177.           BNE CYCLE2
  178.           LDA #$FF
  179.           STA JOBNO
  180.           BNE CYCLE
  181. CYCLE2    JSR SETJOB
  182.           RTS
  183. *
  184. DOCYCLE   JSR CYCLE
  185.           LDY #JSTATUS
  186.           LDA (JOBPTR),Y
  187.           BEQ DOCYC2
  188.           LDY #JPAUSE
  189.           LDA (JOBPTR),Y
  190.           BEQ DOCYC4
  191.           JSR RESUME
  192.           BCS DOCYC2
  193.           LDY #JPCOUNT
  194.           LDA PCOUNT
  195.           STA (JOBPTR),Y
  196.           LDY #JPAUSE
  197.           LDA #0
  198.           STA (JOBPTR),Y
  199. DOCYC4    LDY #JPCOUNT
  200.           LDA (JOBPTR),Y
  201.           CMP PCOUNT
  202.           BNE DOCYC2
  203. DOCYC3    CLC
  204.           RTS
  205. DOCYC2    SEC
  206.           RTS
  207. *
  208. PRTINC    LDY #JPCOUNT
  209.           LDA (JOBPTR),Y
  210.           LDY #JPRIORTY
  211.           CLC
  212.           ADC (JOBPTR),Y
  213.           LDY #JPCOUNT
  214.           STA (JOBPTR),Y
  215.           RTS
  216. *
  217. TIME      LDY #0
  218. TIME3     LDA Q1,Y
  219.           CLC
  220.           ADC #1
  221.           STA Q1,Y
  222.           CMP K1,Y
  223.           BCS TIME2
  224.           RTS
  225. TIME2     LDA #0
  226.           STA Q1,Y
  227.           INY
  228.           CPY #7
  229.           BNE TIME3
  230.           RTS
  231. *
  232. * IN ROUTINE CHECKS FOR INPUT
  233. * DATA AT INPUT DEVICE OF CURRENT
  234. * JOB AND PUSHES IT ONTO THE FIFO
  235. * IF VALID
  236. *
  237. IN        LDY #JINDEV
  238.           LDA (JOBPTR),Y
  239.           TAY
  240.           JSR DEVIN
  241.           BCS IN2
  242.           PHA
  243.           LDY #JINP1
  244.           LDA (JOBPTR),Y
  245.           TAY
  246.           PLA
  247.           STA (INBUF),Y
  248.           TYA
  249.           LDY #JINP2
  250.           CLC
  251.           ADC #1
  252.           CMP (JOBPTR),Y
  253.           BEQ IN2
  254.           LDY #JINP1
  255.           STA (JOBPTR),Y
  256. IN2       RTS
  257. *
  258. * OUT ROUTINE CHECKS FOR DATA
  259. * IN FIFO OUTPUT BUFFER AND
  260. * SENDS IT TO OUTPUT DEVICE
  261. *
  262. OUT       LDY #JOUTP2
  263.           LDA (JOBPTR),Y
  264.           LDY #JOUTP1
  265.           CMP (JOBPTR),Y
  266.           BEQ OUT2
  267.           LDY #JOUTP2
  268.           CLC
  269.           ADC #1
  270.           STA (JOBPTR),Y
  271.           LDY #JSUSP
  272.           LDA (JOBPTR),Y
  273.           BNE OUT2
  274.           LDY #JOUTP2
  275.           LDA (JOBPTR),Y
  276.           TAY
  277.           DEY
  278.           LDA (OUTBUF),Y
  279.           PHA
  280.           LDY #JOUTDEV
  281.           LDA (JOBPTR),Y
  282.           TAY
  283.           PLA
  284.           JSR DEVOUT
  285.           BCC OUT2
  286.           LDY #JOUTP2
  287.           LDA (JOBPTR),Y
  288.           SEC
  289.           SBC #1
  290.           STA (JOBPTR),Y
  291. OUT2      RTS
  292. *
  293. RESUME    LDY #JINDEV
  294.           LDA (JOBPTR),Y
  295.           TAY
  296.           JSR DEVIN
  297.           BCS RESUME2
  298.           CMP #17
  299.           BEQ RESUME3
  300.           CMP #3
  301.           BEQ RESUME4
  302.           SEC
  303. RESUME2   RTS
  304. RESUME3   CLC
  305.           RTS
  306. RESUME4   JSR INTC
  307.           SEC
  308.           RTS
  309. *
  310. INTER     LDY #JINP1
  311.           LDA (JOBPTR),Y
  312.           LDY #JINP2
  313.           CMP (JOBPTR),Y
  314.           BEQ INTER3
  315.           TAY
  316.           DEY
  317.           LDA (INBUF),Y
  318.           LDY #7
  319. INTER1    CMP INTTBL-1,Y
  320.           BEQ INTER2
  321.           DEY
  322.           BNE INTER1
  323.           RTS
  324. INTER2    DEY
  325.           TYA
  326.           ASL
  327.           TAY
  328.           LDA INTJMP,Y
  329.           STA PTR1
  330.           INY
  331.           LDA INTJMP,Y
  332.           STA PTR1+1
  333.           JMP (PTR1)
  334. INTTBL    DFB 3,20,15
  335.           DFB 19,17,24
  336.           DFB 26,0
  337. INTJMP    DFB #<INTC,#>INTC
  338.           DFB #<INTT,#>INTT
  339.           DFB #<INTO,#>INTO
  340.           DFB #<INTS,#>INTS
  341.           DFB #<INTQ,#>INTQ
  342.           DFB #<INTX,#>INTX
  343.           DFB #<INTZ,#>INTZ
  344. INTER3    RTS
  345. INTC      LDY #JCCOUNT
  346.           LDA (JOBPTR),Y
  347.           CLC
  348.           ADC #1
  349.           STA (JOBPTR),Y
  350.           CMP #2
  351.           BCS INTC2
  352.           JSR PULL
  353.           RTS
  354. INTC2     LDA #0
  355.           STA (JOBPTR),Y
  356.           LDY #JCTRLC
  357.           LDA (JOBPTR),Y
  358.           PHA
  359.           INY
  360.           LDA (JOBPTR),Y
  361.           BNE INTC3
  362.           PLA
  363.           JSR PULL
  364.           JSR PRINT
  365.           ASC '?NO CTRL-C VECTOR'
  366.           DFB $8D,0
  367.           RTS
  368. INTC3     LDY #JPROG+1
  369.           STA (JOBPTR),Y
  370.           DEY
  371.           PLA
  372.           STA (JOBPTR),Y
  373.           JSR RESET
  374.           LDA #0
  375.           LDY #JSUSP
  376.           STA (JOBPTR),Y
  377.           LDY #JPAUSE
  378.           STA (JOBPTR),Y
  379.           LDY #JCTRLC
  380.           LDA (JOBPTR),Y
  381.           PHA
  382.           INY
  383.           LDA (JOBPTR),Y
  384.           LDY #JPROG+1
  385.           STA (JOBPTR),Y
  386.           DEY
  387.           PLA
  388.           STA (JOBPTR),Y
  389.           LDY #JPCOUNT
  390.           LDA PCOUNT
  391.           CLC
  392.           ADC #1
  393.           STA (JOBPTR),Y
  394.           JSR PRINT
  395.           ASC '^C'
  396.           DFB $8D,0
  397.           RTS
  398. INTO      JSR PULL
  399.           LDY #JSUSP
  400.           LDA (JOBPTR),Y
  401.           EOR #1
  402.           STA (JOBPTR),Y
  403.           LDA #0
  404.           LDY #JOUTP1
  405.           STA (JOBPTR),Y
  406.           LDY #JOUTP2
  407.           STA (JOBPTR),Y
  408.           RTS
  409. INTT      JSR PULL
  410.           JSR PRINT
  411.           DFB 91,0
  412.           LDA #<QD
  413.           LDY #>QD
  414.           JSR DAYPRT
  415.           LDA #<QS
  416.           LDY #>QS
  417.           JSR TIMPRT
  418.           JSR PRINT
  419.           ASC ' JOB '
  420.           DFB 0
  421.           LDA #0
  422.           STA T1+1
  423.           LDA JOBNO
  424.           STA T1
  425.           JSR DECPRT
  426.           JSR PRINT
  427.           ASC ' ON DEV ('
  428.           DFB 0
  429.           LDY #JINDEV
  430.           LDA (JOBPTR),Y
  431.           STA T1
  432.           JSR DECPRT
  433.           LDA #'/'
  434.           JSR PUSH
  435.           LDY #JOUTDEV
  436.           LDA (JOBPTR),Y
  437.           STA T1
  438.           JSR DECPRT
  439.           JSR PRINT
  440.           ASC ') S'
  441.           DFB 0
  442.           LDY #JSTATUS
  443.           LDA (JOBPTR),Y
  444.           STA T1
  445.           JSR DECPRT
  446.           JSR PRINT
  447.           ASC ' P'
  448.           DFB 0
  449.           LDY #JPRIORTY
  450.           LDA (JOBPTR),Y
  451.           STA T1
  452.           JSR DECPRT
  453.           JSR PRINT
  454.           ASC ' R'
  455.           DFB 0
  456.           LDY #JRUNSTAT
  457.           LDA (JOBPTR),Y
  458.           STA T1
  459.           JSR DECPRT
  460.           JSR PRINT
  461.           ASC '          ; RUNNING IN '
  462.           DFB 0
  463.           LDY #JNAME
  464.           STY T1
  465. INTT3     LDY T1
  466.           LDA (JOBPTR),Y
  467.           BEQ INTT2
  468.           JSR PUSH
  469.           INC T1
  470.           JMP INTT3
  471. INTT2     JSR PRINT
  472.           ASC ' AT '
  473.           DFB 0
  474.           LDY #JPROG
  475.           LDA (JOBPTR),Y
  476.           STA T1
  477.           INY
  478.           LDA (JOBPTR),Y
  479.           STA T1+1
  480.           JSR DECPRT
  481.           LDA #93
  482.           JSR PUSH
  483.           LDA #13
  484.           JSR PUSH
  485.           RTS
  486. INTS      JSR PULL
  487.           LDY #JPAUSE
  488.           LDA #1
  489.           STA (JOBPTR),Y
  490.           RTS
  491. INTQ      JSR PULL
  492.           LDY #JPAUSE
  493.           LDA #0
  494.           STA (JOBPTR),Y
  495.           RTS
  496. INTX      LDY #JINTX
  497.           LDA (JOBPTR),Y
  498.           PHA
  499.           INY
  500.           LDA (JOBPTR),Y
  501.           BNE INTX2
  502.           PLA
  503.           RTS
  504. INTX2     LDY #JPROG+1
  505.           STA (JOBPTR),Y
  506.           DEY
  507.           PLA
  508.           STA (JOBPTR),Y
  509.           JSR PULL
  510.           RTS
  511. INTZ      LDY #JINTZ
  512.           LDA (JOBPTR),Y
  513.           PHA
  514.           INY
  515.           LDA (JOBPTR),Y
  516.           BNE INTZ2
  517.           PLA
  518.           RTS
  519. INTZ2     LDY #JPROG+1
  520.           STA (JOBPTR),Y
  521.           DEY
  522.           PLA
  523.           STA (JOBPTR),Y
  524.           JSR PULL
  525.           RTS
  526. *
  527. PROMPT    PLA
  528.           STA PTR1
  529.           PLA
  530.           STA PTR1+1
  531.           LDX #0
  532.           LDY #JPROMPT
  533. PROMPT3   INC PTR1
  534.           BNE PROMPT2
  535.           INC PTR1+1
  536. PROMPT2   LDA (PTR1,X)
  537.           STA (JOBPTR),Y
  538.           INY
  539.           CMP #0
  540.           BNE PROMPT3
  541.           LDA PTR1+1
  542.           PHA
  543.           LDA PTR1
  544.           PHA
  545.           RTS
  546. *
  547. NAME      PLA
  548.           STA PTR1
  549.           PLA
  550.           STA PTR1+1
  551.           LDX #0
  552.           LDY #JNAME
  553. NAME3     INC PTR1
  554.           BNE NAME2
  555.           INC PTR1+1
  556. NAME2     LDA (PTR1,X)
  557.           STA (JOBPTR),Y
  558.           INY
  559.           CMP #0
  560.           BNE NAME3
  561.           LDA PTR1+1
  562.           PHA
  563.           LDA PTR1
  564.           PHA
  565.           RTS
  566. *
  567. READLN    LDA #0
  568.           LDY #JPRSEP1
  569.           STA (JOBPTR),Y
  570.           LDY #JPRSEP2
  571.           STA (JOBPTR),Y
  572.           LDY #JSUSP
  573.           STA (JOBPTR),Y
  574. READLN0   LDY #JPROMPT
  575.           STY T1
  576. READ3     LDY T1
  577.           LDA (JOBPTR),Y
  578.           BEQ READ10
  579.           INY
  580.           STY T1
  581.           JSR PUSH
  582.           JMP READ3
  583. READ10    LDY #0
  584.           STY T2
  585.           LDY #JPRSEP1
  586.           LDA (JOBPTR),Y
  587.           STA T1
  588. READ11    LDY T2
  589.           CPY T1
  590.           BEQ READ2
  591.           LDA (PRSEBUF),Y
  592.           JSR PUSH
  593.           INC T2
  594.           JMP READ11
  595. READ2     JSR SLEEP
  596.           LDY #JCCOUNT
  597.           LDA (JOBPTR),Y
  598.           BEQ READ8
  599.           JMP READC
  600. READ8     JSR PULL
  601.           BCS READ2
  602.           PHA
  603.           LDY #JSUSP
  604.           LDA #0
  605.           STA (JOBPTR),Y
  606.           PLA
  607.           LDY #8
  608. READ5     CMP READTBL-1,Y
  609.           BEQ READ4
  610.           DEY
  611.           BNE READ5
  612. READ7     PHA
  613.           LDY #JPRSEP1
  614.           LDA (JOBPTR),Y
  615.           CLC
  616.           ADC #5
  617.           LDY #JPRSEP2
  618.           CMP (JOBPTR),Y
  619.           BEQ READ9
  620.           LDY #JPRSEP1
  621.           LDA (JOBPTR),Y
  622.           CLC
  623.           ADC #1
  624.           STA (JOBPTR),Y
  625.           TAY
  626.           DEY
  627.           PLA
  628.           STA (PRSEBUF),Y
  629.           PHA
  630.           LDY #JECHO
  631.           LDA (JOBPTR),Y
  632.           BEQ READ12
  633.           PLA
  634.           JMP READ2
  635. READ12    PLA
  636.           CMP #32
  637.           BCS READ6
  638.           PHA
  639.           LDA #'^'
  640.           JSR PUSH
  641.           PLA
  642.           ORA #%01000000
  643. READ6     JSR PUSH
  644.           JMP READ2
  645. READ9     PLA
  646.           LDA #7
  647.           JSR PUSH
  648.           JMP READ2
  649. READ4     DEY
  650.           TYA
  651.           ASL
  652.           TAY
  653.           LDA RDTBL,Y
  654.           STA PTR1
  655.           INY
  656.           LDA RDTBL,Y
  657.           STA PTR1+1
  658.           JMP (PTR1)
  659. READM     LDA #13
  660.           JSR PUSH
  661.           RTS
  662. READC     LDY #JOUTP1
  663.           LDA (JOBPTR),Y
  664.           LDY #JOUTP2
  665.           CMP (JOBPTR),Y
  666.           BEQ READC2
  667.           JMP READ2
  668. READC2    JSR RESET
  669.           JSR PRINT
  670.           ASC '^C'
  671.           DFB $8D,0
  672.           LDY #JCCOUNT
  673.           LDA #0
  674.           STA (JOBPTR),Y
  675.           LDY #JCTRLC
  676.           LDA (JOBPTR),Y
  677.           STA PTR1
  678.           INY
  679.           LDA (JOBPTR),Y
  680.           STA PTR1+1
  681.           JMP (PTR1)
  682. READH     LDY #JPRSEP1
  683.           LDA (JOBPTR),Y
  684.           BNE READH2
  685.           LDA #13
  686.           JSR PUSH
  687.           JMP READLN
  688. READH2    SEC
  689.           SBC #1
  690.           STA (JOBPTR),Y
  691.           TAY
  692.           LDA (PRSEBUF),Y
  693.           CMP #32
  694.           BCS READH3
  695.           LDA #8
  696.           JSR PUSH
  697. READH3    JSR PRINT
  698.           DFB 8,32,8,0
  699.           JMP READ2
  700. READE     LDA #'$'
  701.           JMP READ7
  702. READL     LDA #12
  703.           JSR PUSH
  704.           JMP READLN0
  705. READU     LDA #' '
  706.           JMP READ7
  707. READR     LDA #13
  708.           JSR PUSH
  709.           JMP READLN0
  710. READTBL   DFB 13,3,8
  711.           DFB 27,127,12
  712.           DFB 21,18
  713. *
  714. * M,C,H,ESC,<DELETE>
  715. *
  716. RDTBL     DFB #<READM,#>READM
  717.           DFB #<READC,#>READC
  718.           DFB #<READH,#>READH
  719.           DFB #<READE,#>READE
  720.           DFB #<READH,#>READH
  721.           DFB #<READL,#>READL
  722.           DFB #<READU,#>READU
  723.           DFB #<READR,#>READR
  724. *
  725. LEADIN    LDY #JPRSEP1
  726.           LDA (JOBPTR),Y
  727.           STA T1
  728.           LDY #JPRSEP2
  729.           LDA (JOBPTR),Y
  730.           TAY
  731. LEADIN3   LDA (PRSEBUF),Y
  732.           CPY T1
  733.           BEQ LEADIN2
  734.           JSR DELIM
  735.           BCS LEADIN2
  736.           INY
  737.           JMP LEADIN3
  738. LEADIN2   TYA
  739.           LDY #JPRSEP2
  740.           STA (JOBPTR),Y
  741.           RTS
  742. *
  743. DELIM     LDX #0
  744.           STA T7
  745. DELIM4    LDA DELTBL,X
  746.           BEQ DELIM2
  747.           CMP T7
  748.           BEQ DELIM3
  749.           INX
  750.           JMP DELIM4
  751. DELIM2    SEC
  752.           LDA T7
  753.           RTS
  754. DELIM3    CLC
  755.           LDA T7
  756.           RTS
  757. DELTBL    ASC ' "(),./:  ;=<>'
  758.           DFB 0
  759. *
  760. PARNUM    JSR LEADIN
  761.           LDY #JPRSEP2
  762.           LDA (JOBPTR),Y
  763.           STA T1
  764.           LDY #JPRSEP1
  765.           LDA (JOBPTR),Y
  766.           STA T2
  767.           LDA #0
  768.           STA T5
  769.           STA T3
  770.           STA T3+1
  771.           LDA T1
  772.           CMP T2
  773.           BNE PARNUM3
  774.           SEC
  775.           RTS
  776. PARNUM3   LDY T1
  777.           CPY T2
  778.           BEQ PARNUM2
  779.           LDA (PRSEBUF),Y
  780.           JSR DELIM
  781.           BCC PARNUM2
  782.           CMP #'?'
  783.           BNE PARNUM5
  784.           JSR PRINT
  785.           ASC '(NUMERICAL ARGUMENT EXPECTED)'
  786.           DFB $8D,0
  787.           RTS
  788. PARNUM5   CMP #'0'
  789.           BCC PARNUM2
  790.           CMP #':'
  791.           BCS PARNUM2
  792.           SEC
  793.           SBC #'0'
  794.           PHA
  795.           LDA T3
  796.           STA T4
  797.           LDA T3+1
  798.           STA T4+1
  799.           ASL T3
  800.           ROL T3+1
  801.           ASL T3
  802.           ROL T3+1
  803.           ASL T3
  804.           ROL T3+1
  805.           ASL T4
  806.           ROL T4+1
  807.           LDA T3
  808.           CLC
  809.           ADC T4
  810.           STA T3
  811.           LDA T3+1
  812.           ADC T4+1
  813.           STA T3+1
  814.           PLA
  815.           CLC
  816.           ADC T3
  817.           STA T3
  818.           LDA #0
  819.           ADC T3+1
  820.           STA T3+1
  821.           LDA #1
  822.           STA T5
  823.           INC T1
  824.           JMP PARNUM3
  825. PARNUM2   LDY #JPRSEP2
  826.           LDA T1
  827.           STA (JOBPTR),Y
  828.           LDA T5
  829.           BNE PARNUM4
  830.           SEC
  831.           RTS
  832. PARNUM4   CLC
  833.           RTS
  834. *
  835. LISTCMD   JSR PRINT
  836.           ASC 'OPTION, ONE OF THE FOLLOWING:'
  837.           DFB $8D,$8D,0
  838.           LDA #0
  839.           STA T2
  840.           LDX #0
  841. LISTCMD3  LDA (PTR3,X)
  842.           BEQ LISTCMD2
  843.           JSR PUSH
  844.           INC PTR3
  845.           BNE LISTCMD5
  846.           INC PTR3+1
  847. LISTCMD5  JMP LISTCMD3
  848. LISTCMD2  JSR SLEEP
  849.           INC T2
  850.           LDA T2
  851.           CMP #3
  852.           BNE LISTCMD6
  853.           LDA #0
  854.           STA T2
  855.           LDA #13
  856.           JSR PUSH
  857.           JMP LISTCMD7
  858. LISTCMD6  TAY
  859.           LDA LISTTAB,Y
  860.           JSR TAB
  861. LISTCMD7  LDA (PTR3,X)
  862.           BNE LISTCMD3
  863.           INC PTR3
  864.           BNE LISTCMD4
  865.           INC PTR3+1
  866. LISTCMD4  LDA (PTR3,X)
  867.           BNE LISTCMD3
  868.           LDA #13
  869.           JSR PUSH
  870.           LDA T2
  871.           BEQ LISTCMD8
  872.           LDA #13
  873.           JSR PUSH
  874. LISTCMD8  SEC
  875.           RTS
  876. LISTTAB   DFB 0,13,26
  877. *
  878. PARSE     JSR LEADIN
  879.           LDY #JPRSEP1
  880.           LDA (JOBPTR),Y
  881.           LDY #JPRSEP2
  882.           CMP (JOBPTR),Y
  883.           BNE PARSE0
  884.           CLC
  885.           RTS
  886. PARSE0    LDX #0
  887.           STX T1
  888.           STX T2
  889.           LDA PTR3
  890.           STA PTR4
  891.           LDA PTR3+1
  892.           STA PTR4+1
  893. PARSE3    LDY #JPRSEP2
  894.           LDA (JOBPTR),Y
  895.           STA T3
  896.           LDY #JPRSEP1
  897.           LDA (JOBPTR),Y
  898.           STA T4
  899. PARSE5    LDY T3
  900.           LDA (PRSEBUF),Y
  901.           JSR SLEEP
  902.           CPY T4
  903.           BEQ PARSE1
  904.           CMP #'!'
  905.           BEQ PARSE19
  906.           CMP #'?'
  907.           BNE PARSE14
  908.           JMP LISTCMD
  909. PARSE14   JSR DELIM
  910.           LDX #0
  911.           BCC PARSE1
  912.           STA T5
  913.           LDA (PTR4,X)
  914.           BEQ PARSE2
  915.           CMP T5
  916.           BNE PARSE2
  917.           INC T3
  918.           INC PTR4
  919.           BNE PARSE4
  920.           INC PTR4+1
  921. PARSE4    JMP PARSE5
  922. PARSE1    INC T1
  923.           LDA T2
  924.           STA T6
  925.           LDA T3
  926.           STA T8
  927.           LDA (PTR4,X)
  928.           BEQ PARSE11
  929. PARSE2    INC T2
  930. PARSE8    LDA (PTR4,X)
  931.           BEQ PARSE6
  932.           INC PTR4
  933.           BNE PARSE7
  934.           INC PTR4+1
  935. PARSE7    JMP PARSE8
  936. PARSE6    INC PTR4
  937.           BNE PARSE9
  938.           INC PTR4+1
  939. PARSE9    LDA (PTR4,X)
  940.           BEQ PARSE12
  941.           JMP PARSE3
  942. PARSE12   LDA T1
  943.           BNE PARSE10
  944.           JSR PRINT
  945.           ASC '?UNRECOGNIZED COMMAND-KEYWORD NOT FOUND'
  946.           DFB $8D,0
  947.           SEC
  948. PARSE19   RTS
  949. PARSE10   CMP #2
  950.           BCC PARSE11
  951.           JSR PRINT
  952.           ASC '?UNRECOGINIZED COMMAND-AMBIGUOUS'
  953.           DFB $8D,0
  954.           SEC
  955.           RTS
  956. PARSE11   LDA T6
  957.           ASL
  958.           ASL
  959.           TAY
  960.           LDA (PTR2),Y
  961.           STA PTR1
  962.           INY
  963.           LDA (PTR2),Y
  964.           STA PTR1+1
  965.           INY
  966.           LDA (PTR2),Y
  967.           LDY #JSTATUS
  968.           CMP (JOBPTR),Y
  969.           BCC PARSE18
  970.           JMP PARSE13
  971. PARSE18   CMP #50
  972.           BCC PARSE15
  973.           JSR PRINT
  974.           ASC '?LOGIN PLEASE'
  975.           DFB $8D,0
  976.           SEC
  977.           RTS
  978. PARSE15   CMP #10
  979.           BCC PARSE16
  980.           JSR PRINT
  981.           ASC '?PRIVILEGED STATUS REQUIRED'
  982.           DFB $8D,0
  983.           SEC
  984.           RTS
  985. PARSE16   CMP #1
  986.           BEQ PARSE17
  987.           JSR PRINT
  988.           ASC '?WHEEL OR OPERATOR CAPABILITY REQUIRED'
  989.           DFB $8D,0
  990.           SEC
  991.           RTS
  992. PARSE17   JSR PRINT
  993.           ASC '?OPERATOR CAPABILITY REQUIRED'
  994.           DFB $8D,0
  995.           SEC
  996.           RTS
  997. PARSE13   LDY #JPRSEP2
  998.           LDA T8
  999.           STA (JOBPTR),Y
  1000.           JMP (PTR1)
  1001. *
  1002. CMD       PLA
  1003.           STA PTR1
  1004.           PLA
  1005.           STA PTR1+1
  1006.           LDY #1
  1007.           LDA (PTR1),Y
  1008.           STA PTR3
  1009.           INY
  1010.           LDA (PTR1),Y
  1011.           STA PTR3+1
  1012.           INY
  1013.           LDA (PTR1),Y
  1014.           STA PTR2
  1015.           INY
  1016.           LDA (PTR1),Y
  1017.           STA PTR2+1
  1018.           TYA
  1019.           CLC
  1020.           ADC PTR1
  1021.           STA PTR1
  1022.           LDA #0
  1023.           ADC PTR1+1
  1024.           PHA
  1025.           LDA PTR1
  1026.           PHA
  1027.           RTS
  1028. *
  1029. PROGRAM   LDX #0
  1030.           LDY #JREGS
  1031. PROG2     LDA (JOBPTR),Y
  1032.           STA REGS,X
  1033.           INY
  1034.           INX
  1035.           CPX #5
  1036.           BNE PROG2
  1037.           LDX #0
  1038.           LDY #JVAR
  1039. PROG4     LDA (JOBPTR),Y
  1040.           STA X1,X
  1041.           INY
  1042.           INX
  1043.           CPX #$30
  1044.           BNE PROG4
  1045.           LDY #JPROG
  1046.           LDA (JOBPTR),Y
  1047.           STA TEMP
  1048.           INY
  1049.           LDA (JOBPTR),Y
  1050.           STA TEMP+1
  1051.           LDY #0
  1052. PROG3     LDA (SYSMEM),Y
  1053.           STA $100,Y
  1054.           DEY
  1055.           BNE PROG3
  1056.           LDY $47
  1057.           LDX $49
  1058.           TXS
  1059.           LDX $46
  1060.           LDA $48
  1061.           PHA
  1062.           LDA $45
  1063.           PLP
  1064.           JMP (TEMP)
  1065. *
  1066. SLEEP     STA REGS
  1067.           PLA
  1068.           STA TEMP
  1069.           PLA
  1070.           STA TEMP+1
  1071.           LDA REGS
  1072.           STA $45
  1073.           STX $46
  1074.           STY $47
  1075.           PHP
  1076.           PLA
  1077.           STA $48
  1078.           TSX
  1079.           STX $49
  1080.           INC TEMP
  1081.           BNE SLEEP4
  1082.           INC TEMP+1
  1083. SLEEP4    LDY #JPROG
  1084.           LDA TEMP
  1085.           STA (JOBPTR),Y
  1086.           INY
  1087.           LDA TEMP+1
  1088.           STA (JOBPTR),Y
  1089.           LDX #0
  1090.           LDY #JREGS
  1091. SLEEP3    LDA REGS,X
  1092.           STA (JOBPTR),Y
  1093.           INY
  1094.           INX
  1095.           CPX #5
  1096.           BNE SLEEP3
  1097.           LDX #0
  1098.           LDY #JVAR
  1099. SLEEP5    LDA X1,X
  1100.           STA (JOBPTR),Y
  1101.           INY
  1102.           INX
  1103.           CPX #$30
  1104.           BNE SLEEP5
  1105.           LDY #0
  1106. SLEEP2    LDA $100,Y
  1107.           STA (SYSMEM),Y
  1108.           DEY
  1109.           BNE SLEEP2
  1110.           PLA
  1111.           PLA
  1112.           JMP LOOP3
  1113. *
  1114. TAB       STA T1
  1115.           LDY #JCOLUMN
  1116.           LDA (JOBPTR),Y
  1117.           CMP T1
  1118.           BCS TAB3
  1119.           LDA T1
  1120.           SEC
  1121.           SBC (JOBPTR),Y
  1122.           STA T1
  1123.           INC T1
  1124. TAB2      LDA #' '
  1125.           JSR PUSH
  1126.           DEC T1
  1127.           BNE TAB2
  1128. TAB3      RTS
  1129. *
  1130. PRINT     PLA
  1131.           STA PTR0
  1132.           PLA
  1133.           STA PTR0+1
  1134. PRINT1    INC PTR0
  1135.           BNE PRINT2
  1136.           INC PTR0+1
  1137. PRINT2    LDY #0
  1138.           LDA (PTR0),Y
  1139.           CMP #0
  1140.           BEQ PRINT3
  1141.           JSR PUSH
  1142.           JMP PRINT1
  1143. PRINT3    LDA PTR0+1
  1144.           PHA
  1145.           LDA PTR0
  1146.           PHA
  1147.           RTS
  1148. *
  1149. PUSH      AND #$7F
  1150.           CMP #10
  1151.           BEQ PUSH6
  1152. PUSH0     PHA
  1153.           LDY #JCOLUMN
  1154.           CMP #13
  1155.           BNE PUSH3
  1156.           LDA #0
  1157.           STA (JOBPTR),Y
  1158.           JMP PUSH1
  1159. PUSH3     LDA (JOBPTR),Y
  1160.           CLC
  1161.           ADC #1
  1162.           STA (JOBPTR),Y
  1163. PUSH1     LDY #JOUTP1
  1164.           LDA (JOBPTR),Y
  1165.           LDY #JOUTP2
  1166.           CLC
  1167.           ADC #1
  1168.           CMP (JOBPTR),Y
  1169.           BNE PUSH2
  1170.           LDA SUBJOB
  1171.           CMP SUBPROG
  1172.           BNE PUSH5
  1173.           JSR SLEEP
  1174.           JMP PUSH1
  1175. PUSH5     PLA
  1176.           RTS
  1177. PUSH2     LDY #JOUTP1
  1178.           STA (JOBPTR),Y
  1179.           TAY
  1180.           DEY
  1181.           PLA
  1182.           STA (OUTBUF),Y
  1183.           CMP #13
  1184.           BNE PUSH6
  1185.           LDA #10
  1186.           JMP PUSH0
  1187. PUSH6     RTS
  1188. *
  1189. RESET     LDA #0
  1190.           LDY #JINP1
  1191.           STA (JOBPTR),Y
  1192.           LDY #JINP2
  1193.           STA (JOBPTR),Y
  1194.           LDY #JOUTP1
  1195.           STA (JOBPTR),Y
  1196.           LDY #JOUTP2
  1197.           STA (JOBPTR),Y
  1198.           RTS
  1199. *
  1200. PULL      LDY #JINP2
  1201.           LDA (JOBPTR),Y
  1202.           LDY #JINP1
  1203.           CMP (JOBPTR),Y
  1204.           BEQ PULL2
  1205.           LDY #JINP2
  1206.           CLC
  1207.           ADC #1
  1208.           STA (JOBPTR),Y
  1209.           TAY
  1210.           DEY
  1211.           LDA (INBUF),Y
  1212.           CLC
  1213.           RTS
  1214. PULL2     SEC
  1215.           RTS
  1216. *
  1217. DECPRT    JSR DEC
  1218.           LDX #$FF
  1219. DECPRT3   INX
  1220.           CPX #4
  1221.           BEQ DECPRT2
  1222.           LDA DECOUT,X
  1223.           CMP #'0'
  1224.           BEQ DECPRT3
  1225. DECPRT2   LDA DECOUT,X
  1226.           JSR PUSH
  1227.           INX
  1228.           CPX #5
  1229.           BNE DECPRT2
  1230.           RTS
  1231. *
  1232. DEC       LDA #5
  1233.           STA T2
  1234.           LDA #<DECOUT
  1235.           STA PTR1
  1236.           LDA #>DECOUT
  1237.           STA PTR1+1
  1238.           LDY #0
  1239. DEC1      LDA #'0'
  1240.           STA T3
  1241. DEC2      LDA T1
  1242.           SEC
  1243.           SBC DECTBL,Y
  1244.           TAX
  1245.           LDA T1+1
  1246.           SBC DECTBL+1,Y
  1247.           BCC DEC3
  1248.           STA T1+1
  1249.           STX T1
  1250.           INC T3
  1251.           BNE DEC2
  1252. DEC3      LDX #0
  1253.           LDA T3
  1254.           STA (PTR1,X)
  1255.           INC PTR1
  1256.           BNE DEC4
  1257.           INC PTR1+1
  1258. DEC4      INY
  1259.           INY
  1260.           DEC T2
  1261.           BNE DEC1
  1262.           RTS
  1263. DECTBL    DFB #<10000,#>10000
  1264.           DFB #<1000,#>1000
  1265.           DFB #<100,#>100
  1266.           DFB #<10,#>10
  1267.           DFB #<1,#>1
  1268. DECOUT    DS 5
  1269. *
  1270. ZERO      LDY #0
  1271.           TYA
  1272. ZERO2     STA (JOBPTR),Y
  1273.           DEY
  1274.           BNE ZERO2
  1275.           RTS
  1276. *
  1277. TIMPRT    STA PTR2
  1278.           STY PTR2+1
  1279.           LDA #' '
  1280.           JSR PUSH
  1281.           LDA #2
  1282.           STA T5
  1283.           LDA #0
  1284.           STA T1+1
  1285. TIMPRT4   LDY T5
  1286.           LDA (PTR2),Y
  1287.           STA T1
  1288.           JSR DEC
  1289.           LDX #3
  1290. TIMPRT2   LDA DECOUT,X
  1291.           JSR PUSH
  1292.           INX
  1293.           CPX #5
  1294.           BNE TIMPRT2
  1295.           LDA T5
  1296.           BNE TIMPRT3
  1297.           LDA #' '
  1298.           JSR PUSH
  1299.           RTS
  1300. TIMPRT3   LDA #':'
  1301.           JSR PUSH
  1302.           DEC T5
  1303.           JMP TIMPRT4
  1304. *
  1305. DAYPRT    STA PTR2
  1306.           STY PTR2+1
  1307.           LDA #' '
  1308.           JSR PUSH
  1309.           LDA #0
  1310.           STA T1+1
  1311.           LDY #0
  1312.           LDA (PTR2),Y
  1313.           STA T1
  1314.           JSR DECPRT
  1315.           LDA #'-'
  1316.           JSR PUSH
  1317.           LDY #1
  1318.           LDA (PTR2),Y
  1319.           ASL
  1320.           CLC
  1321.           ADC (PTR2),Y
  1322.           STA T1
  1323.           LDX #3
  1324. DAYPRT2   LDY T1
  1325.           LDA MNTHTBL,Y
  1326.           JSR PUSH
  1327.           INC T1
  1328.           DEX
  1329.           BNE DAYPRT2
  1330.           LDA #'-'
  1331.           JSR PUSH
  1332.           LDY #2
  1333.           LDA (PTR2),Y
  1334.           STA T1
  1335.           JSR DECPRT
  1336.           LDA #' '
  1337.           JSR PUSH
  1338.           RTS
  1339. MNTHTBL   ASC '***JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC'
  1340. *
  1341. * MAIN CONTROL SECTION
  1342. *
  1343. INIT      LDY #0
  1344. INIT6     LDA LOADTXT,Y
  1345.           BEQ INIT7
  1346.           JSR COUT
  1347.           INY
  1348.           JMP INIT6
  1349. LOADTXT   DFB $8D,$84
  1350.           ASC 'BLOAD MUOBJ'
  1351.           DFB $8D,0
  1352. *
  1353. TIMEK     DFB 33,60
  1354.           DFB 60,60,24
  1355.           DFB 31,13,100
  1356. *
  1357. INIT7     JSR DEVICE
  1358.           LDA #$4C
  1359.           STA $3F8
  1360.           LDA #<LOOP
  1361.           STA $3F9
  1362.           LDA #>LOOP
  1363.           STA $3FA
  1364. *
  1365.           LDA #$69
  1366.           STA $3F2
  1367.           LDA #$FF
  1368.           STA $3F3
  1369.           EOR #$A5
  1370.           STA $3F4
  1371. *
  1372.           LDA #0
  1373.           STA PCOUNT
  1374. *
  1375.           LDY #$C0
  1376.           LDA #0
  1377. INIT3     STA SYSRUN,Y
  1378.           DEY
  1379.           BNE INIT3
  1380.           STA SYSRUN
  1381. *
  1382.           LDY #0
  1383. INIT8     LDA TIMEK,Y
  1384.           STA K1,Y
  1385.           INY
  1386.           CPY #8
  1387.           BNE INIT8
  1388. *
  1389.           LDY #0
  1390. INIT5     LDA MUSYS,Y
  1391.           STA $800,Y
  1392.           DEY
  1393.           BNE INIT5
  1394. *
  1395.           LDA #8
  1396.           STA MAXJOBS
  1397. *
  1398.           LDA #<LOGTBL
  1399.           STA SYSLOG
  1400.           LDA #>LOGTBL
  1401.           STA SYSLOG+1
  1402. *
  1403.           LDA #$FF
  1404.           STA JOBNO
  1405.           JSR CYCLE
  1406. INIT2     JSR ZERO
  1407.           JSR CYCLE
  1408.           LDA JOBNO
  1409.           BNE INIT2
  1410. *
  1411.           LDY #JSTATUS
  1412.           LDA #1
  1413.           STA (JOBPTR),Y
  1414.           LDY #JPRIORTY
  1415.           LDA #10
  1416.           STA (JOBPTR),Y
  1417.           LDY #JPROG
  1418.           LDA #<SYSIO
  1419.           STA (JOBPTR),Y
  1420.           INY
  1421.           LDA #>SYSIO
  1422.           STA (JOBPTR),Y
  1423.           LDY #JPCOUNT
  1424.           LDA #1
  1425.           STA (JOBPTR),Y
  1426. *
  1427. * SYSTEM SUPERVISORY ROUTINE
  1428. *
  1429. LOOP      LDA #0
  1430.           STA SUBJOB
  1431.           INC PCOUNT
  1432.           LDA #$FF
  1433.           STA JOBNO
  1434.           JSR CYCLE
  1435. LOOP1     LDY SUBJOB
  1436.           LDA SUBTBL,Y
  1437.           STA LOOPX+1
  1438.           INY
  1439.           LDA SUBTBL,Y
  1440.           BEQ LOOP
  1441.           STA LOOPX+2
  1442.           INY
  1443.           STY SUBJOB
  1444. LOOP2     JSR TIME
  1445.           JSR DOCYCLE
  1446.           BCS LOOP3
  1447. LOOPX     JSR $0000
  1448. LOOP3     LDA JOBNO
  1449.           BNE LOOP2
  1450.           BEQ LOOP1
  1451. SUBTBL    DFB #<IN,#>IN
  1452.           DFB #<INTER,#>INTER
  1453.           DFB #<OUT,#>OUT
  1454.           DFB #<OUT,#>OUT
  1455.           DFB #<OUT,#>OUT
  1456.           DFB #<PROGRAM,#>PROGRAM
  1457.           DFB #<IN,#>IN
  1458.           DFB #<INTER,#>INTER
  1459.           DFB #<OUT,#>OUT
  1460.           DFB #<OUT,#>OUT
  1461.           DFB #<OUT,#>OUT
  1462.           DFB #<PRTINC,#>PRTINC
  1463.           DFB 0,0
  1464. *
  1465. CREATE    PHA
  1466.           LDA JOBNO
  1467.           STA T6
  1468.           LDA JOBPTR
  1469.           STA PTR1
  1470.           LDA JOBPTR+1
  1471.           STA PTR1+1
  1472.           LDA #0
  1473.           STA JOBNO
  1474. CREATE3   JSR CYCLE
  1475.           LDY #JSTATUS
  1476.           LDA (JOBPTR),Y
  1477.           BEQ CREATE2
  1478.           LDA JOBNO
  1479.           BNE CREATE3
  1480.           LDA T6
  1481.           STA JOBNO
  1482.           JSR SETJOB
  1483.           PLA
  1484.           SEC
  1485.           RTS
  1486. CREATE2   JSR ZERO
  1487.           LDY #JSTATUS
  1488.           LDA (PTR1),Y
  1489.           STA (JOBPTR),Y
  1490.           INY
  1491.           LDA (PTR1),Y
  1492.           STA (JOBPTR),Y
  1493.           LDY #JPCOUNT
  1494.           LDA PCOUNT
  1495.           CLC
  1496.           ADC #1
  1497.           STA (JOBPTR),Y
  1498.           LDY #JPROG
  1499.           LDA #<BEGIN
  1500.           STA (JOBPTR),Y
  1501.           INY
  1502.           LDA #>BEGIN
  1503.           STA (JOBPTR),Y
  1504.           LDY #JUSERID
  1505. CREATE4   LDA (PTR1),Y
  1506.           STA (JOBPTR),Y
  1507.           INY
  1508.           CPY #JPROMPT
  1509.           BNE CREATE4
  1510.           LDY #JTIME
  1511.           LDX #0
  1512. CREATE5   LDA QS,X
  1513.           STA (JOBPTR),Y
  1514.           INY
  1515.           INX
  1516.           CPX #6
  1517.           BNE CREATE5
  1518.           LDY #JRUNSTAT
  1519.           PLA
  1520.           STA (JOBPTR),Y
  1521.           LDA JOBNO
  1522.           PHA
  1523.           LDA T6
  1524.           STA JOBNO
  1525.           JSR SETJOB
  1526.           PLA
  1527.           CLC
  1528.           RTS
  1529. *
  1530. ATTACH    STX T1
  1531.           STY T2
  1532.           STA T5
  1533.           LDA JOBNO
  1534.           STA T6
  1535.           LDA T5
  1536.           STA JOBNO
  1537.           JSR SETJOB
  1538.           LDY #JINDEV
  1539.           LDA T1
  1540.           STA (JOBPTR),Y
  1541.           LDY #JOUTDEV
  1542.           LDA T2
  1543.           STA (JOBPTR),Y
  1544.           LDA T6
  1545.           STA JOBNO
  1546.           JSR SETJOB
  1547.           LDA T5
  1548.           LDY T1
  1549.           STA DEVSTAT,Y
  1550.           LDY T2
  1551.           STA DEVSTAT,Y
  1552.           RTS
  1553. *
  1554. KILL      PHA
  1555.           LDA JOBNO
  1556.           STA T6
  1557.           PLA
  1558.           STA JOBNO
  1559.           JSR SETJOB
  1560.           LDY #JINDEV
  1561.           LDA (JOBPTR),Y
  1562.           LDY #JOUTDEV
  1563.           CMP (JOBPTR),Y
  1564.           BEQ KILL3
  1565.           TAY
  1566.           JSR CLOSE
  1567. KILL3     LDY #JINDEV
  1568.           LDA #0
  1569.           STA (JOBPTR),Y
  1570.           LDY #JPROG
  1571.           LDA #<DIE
  1572.           STA (JOBPTR),Y
  1573.           INY
  1574.           LDA #>DIE
  1575.           STA (JOBPTR),Y
  1576.           JSR RESET
  1577.           LDY #JRUNSTAT
  1578.           LDA #%00010000
  1579.           STA (JOBPTR),Y
  1580.           LDX #0
  1581.           LDY #JTIME
  1582. KILL2     LDA QS,X
  1583.           STA (JOBPTR),Y
  1584.           INY
  1585.           INX
  1586.           CPX #6
  1587.           BNE KILL2
  1588.           JSR PRINT
  1589.           DFB $8D
  1590.           ASC 'KILLED JOB '
  1591.           DFB 0
  1592.           LDA #0
  1593.           STA T1+1
  1594.           LDA JOBNO
  1595.           STA T1
  1596.           JSR DECPRT
  1597.           LDY #JUSERID
  1598.           LDA (JOBPTR),Y
  1599.           CMP #'*'
  1600.           BEQ KILL6
  1601.           JSR PRINT
  1602.           ASC ' ,USER '
  1603.           DFB 0
  1604.           LDY #JUSERID
  1605.           STY T1
  1606. KILL4     LDY T1
  1607.           LDA (JOBPTR),Y
  1608.           BEQ KILL5
  1609.           JSR PUSH
  1610.           INC T1
  1611.           LDA T1
  1612.           CMP #JACCOUNT
  1613.           BNE KILL4
  1614. KILL5     LDA #','
  1615.           JSR PUSH
  1616. KILL6     JSR PRINT
  1617.           ASC ' AT '
  1618.           DFB 0
  1619.           LDA #<QD
  1620.           LDY #>QD
  1621.           JSR DAYPRT
  1622.           LDA #<QS
  1623.           LDY #>QS
  1624.           JSR TIMPRT
  1625.           LDA #13
  1626.           JSR PUSH
  1627.           LDA T6
  1628.           STA JOBNO
  1629.           JSR SETJOB
  1630.           RTS
  1631. *
  1632. SYSID     ASC 'SYSJOB'
  1633.           DFB 0,0
  1634.           ASC '****'
  1635. SYSNEW    ASC '****'
  1636.           DFB 0,0,0,0
  1637.           ASC '****'
  1638. *
  1639. SYSOPR    ASC 'OPER'
  1640.           DFB 0
  1641. LOGTBL    DFB 1,3,0,0,0,0,0,0,0
  1642. *
  1643. SYSIO     JSR NAME
  1644.           ASC 'SYSIO'
  1645.           DFB 0
  1646.           LDY #JUSERID
  1647.           LDX #0
  1648. SYSIO2    LDA SYSID,X
  1649.           STA (JOBPTR),Y
  1650.           INX
  1651.           INY
  1652.           CPY #JPROMPT
  1653.           BNE SYSIO2
  1654.           LDA SUBJOB
  1655.           STA SUBPROG
  1656.           LDA JOBNO
  1657.           STA T8
  1658.           LDA #%10000000
  1659.           JSR CREATE
  1660.           STA JOBNO
  1661.           JSR SETJOB
  1662.           LDY #JPROG
  1663.           LDA #<JOBCTL
  1664.           STA (JOBPTR),Y
  1665.           INY
  1666.           LDA #>JOBCTL
  1667.           STA (JOBPTR),Y
  1668.           LDA T8
  1669.           STA JOBNO
  1670.           JSR SETJOB
  1671.           LDA #%10000000
  1672.           JSR CREATE
  1673.           STA JOBNO
  1674.           JSR SETJOB
  1675.           LDY #JPROG
  1676.           LDA #<OPRCHK
  1677.           STA (JOBPTR),Y
  1678.           LDA #>OPRCHK
  1679.           INY
  1680.           STA (JOBPTR),Y
  1681.           LDA T8
  1682.           STA JOBNO
  1683.           JSR SETJOB
  1684.           LDA #%10000000
  1685.           JSR CREATE
  1686.           STA JOBNO
  1687.           JSR SETJOB
  1688.           LDY #JUSERID
  1689.           LDX #0
  1690. SYSIO7    LDA SYSOPR,X
  1691.           STA (JOBPTR),Y
  1692.           BEQ SYSIO8
  1693.           INX
  1694.           INY
  1695.           JMP SYSIO7
  1696. SYSIO8    LDA T8
  1697.           STA JOBNO
  1698.           JSR SETJOB
  1699. SYSIO3    LDA #0
  1700.           STA T8
  1701. SYSIO4    JSR SLEEP
  1702.           LDY T8
  1703.           INC T8
  1704.           LDA LOGTBL,Y
  1705.           BEQ SYSIO3
  1706.           TAY
  1707.           LDA DEVSTAT,Y
  1708.           BNE SYSIO4
  1709.           JSR DEVIN
  1710.           BCS SYSIO4
  1711.           CMP #3
  1712.           BEQ SYSIO6
  1713.           CMP #13
  1714.           BNE SYSIO4
  1715. SYSIO6    LDA #%00100000
  1716.           JSR CREATE
  1717.           BCS SYSIO4
  1718.           STA T7
  1719.           LDY T8
  1720.           DEY
  1721.           LDA LOGTBL,Y
  1722.           TAY
  1723.           TAX
  1724.           LDA T7
  1725.           JSR ATTACH
  1726.           LDA JOBNO
  1727.           STA T6
  1728.           LDA T7
  1729.           STA JOBNO
  1730.           JSR SETJOB
  1731.           LDY #JUSERID
  1732.           LDX #0
  1733. SYSIO5    LDA SYSNEW,X
  1734.           STA (JOBPTR),Y
  1735.           INY
  1736.           INX
  1737.           CPY #JPROMPT
  1738.           BNE SYSIO5
  1739.           LDY #JSTATUS
  1740.           LDA #60
  1741.           STA (JOBPTR),Y
  1742.           INY
  1743.           LDA #2
  1744.           STA (JOBPTR),Y
  1745.           LDA T6
  1746.           STA JOBNO
  1747.           JSR SETJOB
  1748.           JMP SYSIO4
  1749. *
  1750. JOBCTL    JSR NAME
  1751.           ASC 'JOBCTL'
  1752.           DFB 0
  1753. JOBCTL2   LDA MAXJOBS
  1754.           STA T8
  1755. JOBCTL3   JSR SLEEP
  1756.           LDA JOBNO
  1757.           STA T7
  1758.           LDA #2
  1759.           STA JOBNO
  1760.           JSR SETJOB
  1761.           LDY #JSTATUS
  1762.           LDA #1
  1763.           STA (JOBPTR),Y
  1764.           LDY #JRUNSTAT
  1765.           LDA #%10000000
  1766.           STA (JOBPTR),Y
  1767.           LDA T7
  1768.           STA JOBNO
  1769.           JSR SETJOB
  1770.           LDA T8
  1771.           STA JOBNO
  1772.           JSR SETJOB
  1773.           LDA JOBPTR
  1774.           STA PTR2
  1775.           LDA JOBPTR+1
  1776.           STA PTR2+1
  1777.           LDA T7
  1778.           STA JOBNO
  1779.           JSR SETJOB
  1780.           LDY #JRUNSTAT
  1781.           LDA (PTR2),Y
  1782.           AND #%10000000
  1783.           BEQ JOBCTL4
  1784.           JMP JOBCTL7
  1785. JOBCTL4   LDA (PTR2),Y
  1786.           AND #%01000000
  1787.           BEQ JOBCTL5
  1788.           JMP JOBBCH
  1789. JOBCTL5   LDA (PTR2),Y
  1790.           AND #%00100000
  1791.           BEQ JOBCTL6
  1792.           JMP JOBNLI
  1793. JOBCTL6   LDA (PTR2),Y
  1794.           AND #%00010000
  1795.           BEQ JOBCTL7
  1796.           JMP JOBOUT
  1797. JOBCTL7   DEC T8
  1798.           BNE JOBCTL3
  1799.           BEQ JOBCTL2
  1800. JOBBCH    LDY #JOUTP1
  1801.           LDA (PTR2),Y
  1802.           LDY #JOUTP2
  1803.           CMP (PTR2),Y
  1804.           BEQ JOBBCH2
  1805.           JMP JOBCTL7
  1806. JOBBCH2   LDY #JINP1
  1807.           LDA (PTR2),Y
  1808.           LDY #JINP2
  1809.           CMP (PTR2),Y
  1810.           BEQ JOBBCH4
  1811.           JMP JOBCTL7
  1812. JOBBCH4   LDA T8
  1813.           JSR KILL
  1814.           JMP JOBCTL7
  1815. JOBNLI    LDA QM
  1816.           LDY #JTIME+1
  1817.           SEC
  1818.           SBC (PTR2),Y
  1819.           CMP #2
  1820.           BCS JOBNLI2
  1821.           JMP JOBCTL7
  1822. JOBNLI2   LDA T8
  1823.           JSR KILL
  1824.           JMP JOBCTL7
  1825. JOBOUT    LDY #JOUTP1
  1826.           LDA (PTR2),Y
  1827.           LDY #JOUTP2
  1828.           CMP (PTR2),Y
  1829.           BNE JOBOUT2
  1830. JOBOUT3   LDY #JSTATUS
  1831.           LDA #0
  1832.           STA (PTR2),Y
  1833.           LDY #JOUTDEV
  1834.           LDA (PTR2),Y
  1835.           TAY
  1836.           JSR CLOSE
  1837.           JMP JOBCTL7
  1838. JOBOUT2   LDA QM
  1839.           LDY #JTIME+1
  1840.           SEC
  1841.           SBC (PTR2),Y
  1842.           CMP #1
  1843.           BCS JOBOUT3
  1844.           JMP JOBCTL7
  1845. *
  1846. EXEC0     JMP EXEC
  1847. *
  1848. BEGIN     JSR PRINT
  1849.           DFB $8D
  1850.           ASC 'JOB '
  1851.           DFB 0
  1852.           JSR SLEEP
  1853.           LDA JOBNO
  1854.           STA T1
  1855.           LDA #0
  1856.           STA T1+1
  1857.           JSR DECPRT
  1858.           JSR PRINT
  1859.           ASC ' ON MUSYS PROCESSOR V1(6502)'
  1860.           DFB $8D,0
  1861.           JSR SLEEP
  1862.           LDY #JPRMPT
  1863.           LDA #'@'
  1864.           STA (JOBPTR),Y
  1865.           INY
  1866.           LDA #0
  1867.           STA (JOBPTR),Y
  1868.           JSR SLEEP
  1869.           JMP EXEC0
  1870. DIE       JSR SLEEP
  1871.           JMP DIE
  1872. OPRCHK    JSR NAME
  1873.           ASC 'OPRCHK'
  1874.           DFB 0
  1875.           LDA JOBNO
  1876.           STA T8
  1877. OPRCHK3   JSR SLEEP
  1878.           LDA #0
  1879.           STA JOBNO
  1880. OPRCHK2   JSR SETJOB
  1881.           LDY #JSTATUS
  1882.           LDA #1
  1883.           STA (JOBPTR),Y
  1884.           INY
  1885.           LDA #10
  1886.           STA (JOBPTR),Y
  1887.           LDY #JRUNSTAT
  1888.           LDA #%10000000
  1889.           STA (JOBPTR),Y
  1890.           INC JOBNO
  1891.           LDA JOBNO
  1892.           CMP #4
  1893.           BNE OPRCHK2
  1894.           DEC JOBNO
  1895.           JSR SETJOB
  1896.           LDY #JPRIORTY
  1897.           LDA #1
  1898.           STA (JOBPTR),Y
  1899.           LDA T8
  1900.           STA JOBNO
  1901.           JSR SETJOB
  1902.           LDA $C000
  1903.           CMP #$1E
  1904.           BEQ OPRCHK7
  1905.           CMP #$9E
  1906.           BNE OPRCHK3
  1907. OPRCHK7   LDA MAXJOBS
  1908.           STA JOBNO
  1909. OPRCHK6   JSR SETJOB
  1910.           LDY #JINDEV
  1911.           LDA (JOBPTR),Y
  1912.           CMP #1
  1913.           BNE OPRCHK4
  1914.           LDA #0
  1915.           STA (JOBPTR),Y
  1916. OPRCHK4   LDY #JOUTDEV
  1917.           LDA (JOBPTR),Y
  1918.           CMP #1
  1919.           BNE OPRCHK5
  1920.           LDA #0
  1921.           STA (JOBPTR),Y
  1922. OPRCHK5   DEC JOBNO
  1923.           BNE OPRCHK6
  1924.           LDA #3
  1925.           STA JOBNO
  1926.           JSR SETJOB
  1927.           LDA #1
  1928.           LDY #JINDEV
  1929.           STA (JOBPTR),Y
  1930.           LDY #JOUTDEV
  1931.           STA (JOBPTR),Y
  1932.           LDA T8
  1933.           STA JOBNO
  1934.           JSR SETJOB
  1935.           JMP OPRCHK
  1936.